``` #include <grp.h> #include <stdio.h> int main(void) { struct group *g = getgrnam("sudo"); /* 打开并解析/etc/group,openat257+read0 */ if (g == NULL) { perror("getgrnam"); return 1; } printf("group=%s gid=%u\n", g->gr_name, g->gr_gid); for (char **m = g->gr_mem; m && *m; m++) printf(" member=%s\n", *m); return 0; } ``` 链路:`getgrnam()` → glibc 置 `rax=257`(openat)只读打开 `/etc/group`,置 `rax=0`(read)读入缓冲,按冒号与逗号解析为 `struct group`,成员拆进 `gr_mem` 数组。文件经 `close(3)` 关闭。文件全局可读,普